home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 2540 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  2.1 KB

  1. Path: news.gate.net!pslfl2-22
  2. From: bhutto@gate.net (William Hutto)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: quick decision: is n a power of 2?
  5. Date: 21 Jan 1996 20:48:21 GMT
  6. Organization: CyberGate, Inc.
  7. Message-ID: <4du8ql$1vdq@news.gate.net>
  8. References: <Pine.OSF.3.91.960119114608.18779E-100000@io.UWinnipeg.ca> <4dpian$gij@oxy.rust.net> <9601201820.AA01752@dxmint.cern.ch> <4dtqpq$sl2@oxy.rust.net>
  9. NNTP-Posting-Host: pslfl2-22.gate.net
  10. X-Newsreader: News Xpress Version 1.0 Beta #4
  11.  
  12. In article <4dtqpq$sl2@oxy.rust.net>, ebennett@rust.net spake:
  13. ;Dan Pop <danpop@mail.cern.ch> wrote:
  14. ;
  15. ;>ebennett@rust.net writes:
  16. ;
  17. ;>>Given some number, there is a neat trick to generate a mask which will
  18. ;>>have exactly one bit set in it.  The bit set will be the least
  19. ;>>significant non-zero bit in the original number:
  20. ;>>
  21. ;>>    mask = ~number & number;
  22. ;>>
  23. ;>>Now, if number contained a single non-zero bit (and is therefore a
  24. ;>>power of 2),  mask will be equal to number.  Therefore:
  25. ;>>
  26. ;>>   if (number == (~number & number))
  27. ;>>   {
  28. ;>>        /* number is a power of 2 */
  29. ;>>   }
  30. ;>>
  31. ;>>Try it, you'll like it!
  32. ;
  33. ;>I don't think so.  ~number & number will _always_ give 0.  -number & number
  34. ;>will actually work, except for the case when number == 0.  That is,
  35. ;>assuming a two's complement implementation.  On a one's complement or
  36. ;>sign-magnitude implementation it won't work at all.
  37. ;
  38. ;>Yet another guy who makes a fool of himself because he's too lazy to
  39. ;>test his solution before posting.
  40. ;
  41. ;>Dan
  42. ;
  43. ;You are correct in that I made a typo in my message.  ~ should have
  44. ;been -.  There are also some limitations which did not occur to me,
  45. ;which you have rightly pointed out.
  46. ;
  47. ;I agree with the problem with 0, and that is easily checked for.
  48. ;Where would you run into a one's complement or sign-magnitude
  49. ;implementation?
  50. ;
  51. ;However, I do not feel that I made a fool of myself. Most of us are
  52. ;not perfect as you apparently are. The rest of us make mistakes, and
  53. ;learn from them. That does not make us fools.
  54. ;
  55. ;Earl
  56.  
  57. You could always change the -number to (~number+1).
  58.  
  59. Bill
  60.  
  61. William Hutto
  62. bhutto@gate.net
  63. N4YMN
  64.  
  65. "Whatcha got on?...Your mind?"
  66.